<template>
  <div></div>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import { ElLoading } from 'element-plus';
import { useRoute, useRouter } from 'vue-router'; // 添加这两行

// 创建一个响应式引用来存储重定向路径
const redirect = ref(undefined);

// 创建一个用于关闭加载实例的函数
const loadingInstance = ref(null);

const route = useRoute(); // 获取当前路由
const router = useRouter(); // 获取路由器实例

onMounted(async () => {
  // 初始化加载实例
  loadingInstance.value = ElLoading.service({
    lock: true,
    text: "正在验证第三方应用账户数据，请稍候",
    spinner: "el-icon-loading",
    background: "rgba(0, 0, 0, 0.7)",
  });

  // 从路由查询参数中获取数据
  const source = route.query.source; // 使用 route.query 替换 this.$route.query
  const code = route.query.code;
  const state = route.query.state;

  // 注意：这里假设您有一个Vuex store，并且已经通过useStore()钩子或provide/inject机制使其可用
  // 假设dispatch函数返回的是一个Promise
  try {
    await router.app.$store.dispatch("SocialLogin", { code, state, source }); // 使用 router.app.$store 替换 this.$store
    // 登录成功后关闭加载实例并重定向
    loadingInstance.value.close();
    await router.push({ path: redirect.value || "/" }); // 使用 router.push 替换 this.$router.push
  } catch (error) {
    // 登录失败关闭加载实例
    loadingInstance.value.close();
    // 可以添加错误处理逻辑
  }
});
</script>


<style rel="stylesheet/scss" lang="scss">
/* 样式 */
</style>
